/*
#include<stdio.h>
int check(int m);
int k=0,a[1000],N;
void Queen(int r)
{
	int i;
	for(i=1;i<=N;i++)
	{
		a[r-N+1]=i;
		if(check(N-r+1))
		{
			if(r>1)
			{
				Queen(r-1);
			}
			else
			{
				k++;
			}
		}
	}
}
int check(int r)
{
	int i;
	for(i=1;i<r;i++)
	{
		if(a[i]==a[r])return 0;
		if(a[i]-i==a[r]-r)return 0;
		if(a[i]+i==a[r]+r)return 0;
	}
	return 1;
}
int main(void)
{
	scanf("%d",&N);
	Queen(N);
	printf("%d",k);
	return 0;
}

*/
#include<stdio.h>

int check(int m);

int k = 0, a[1000], n;

void Queen(int r) {
    int i;
    for (i = 1; i <= n; i++) {
        a[n - r + 1] = i;//��̽
        if (check(n - r + 1)) {
            if (r > 1)
                Queen(r - 1);
            else
                k++;
        }
    }
}

int check(int r) {//����Ƿ�Ϸ�
    int i;
    for (i = 1; i < r; i++) {
        if (a[i] == a[r])return 0;
        if (a[i] - i == a[r] - r)return 0;
        if (a[i] + i == a[r] + r)return 0;
    }
    return 1;
}

int main(void) {
    scanf("%d", &n);
    Queen(n);
    printf("%d", k);
    return 0;
}

